package com.sxkf.template.service.impl;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sxkf.template.entity.SysConfig;
import com.sxkf.template.mapper.SysConfigMapper;
import com.sxkf.template.service.SysConfigService;
import org.jeecg.common.exception.SxkfException;
import org.jeecg.common.exception.SxkfExceptionEnum;
import org.jeecg.common.util.CheckEmptyUtil;
import org.jeecg.common.util.RedisUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author 张广成
 * @since 2024-11-05 12:03:39
 */
@Service
public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements SysConfigService {
    @Resource
    private RedisUtils redisUtils;


    private static final String PREFIX = "SYS_CONFIG";

    @Override
    public String getValue(String key) {
        String value = redisUtils.hget(PREFIX , key);
        if (CheckEmptyUtil.isEmpty(value)){
            SysConfig sysConfig = getOne(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getConfigKey, key));
            if (sysConfig == null){
                throw new SxkfException(SxkfExceptionEnum.SYSTEM_ERROR);
            }
            value = sysConfig.getConfigValue();
            redisUtils.hset(PREFIX,key,value);
        }
        return value;
    }


    @Override
    public boolean edit(SysConfig systemConfig) {
        redisUtils.hset(PREFIX,systemConfig.getConfigKey(),systemConfig.getConfigValue());
//        // SysConfig里面的id，已经放开了。还可以
//        return update(new LambdaUpdateWrapper<SysConfig>()
//                .set(CheckEmptyUtil.isNotEmpty(systemConfig.getConfigName()),SysConfig::getConfigName,systemConfig.getConfigName())
//                .set(CheckEmptyUtil.isNotEmpty(systemConfig.getConfigValue()),SysConfig::getConfigValue,systemConfig.getConfigValue())
//                .set(CheckEmptyUtil.isNotEmpty(systemConfig.getType()),SysConfig::getType,systemConfig.getType())
//                .eq(SysConfig::getConfigKey,systemConfig.getConfigKey())
//        );
        return updateById(systemConfig);
    }
}
